Various tools exist today to allow users to develop software and related resources, such as the software and resources that comprise web sites, web services and client applications. Some tool vendors integrate the functionality of their particular tool with the functionality of separate tools offered by the same or other companies. The integration between tools allows their features to be used in some useful combination. One problem with the way such tools are integrated is that the tools are usually tightly coupled, with each tool depending on specific implementation details of the other. This means that a change to one of the tools often breaks the integration, requiring the other tool to also be reworked and recompiled to account for the changes.